Retornar Json com ZF2
JSON com o ZF2
Em muitos momentos, é interessante de retornarmos resultados em formato json. Eu costumo utilizar isso quando preciso puxar dados do servidor (normalmente utilizando JQuery). Vou então explicar como gerar resultados em json para isso. O processo é bem simples, e vou dividí-lo em 2 passos:
Configurar o module.config
Nas configurações do seu módulo, incremente dizendo que retornaremos Json. Basta adicionar o trecho strategies
do código abaixo:
'view_manager' => array(
'display_not_found_reason' => true,
'display_exceptions' => true,
'doctype' => 'HTML5',
'not_found_template' => 'error/404',
'exception_template' => 'error/index',
'template_map' => array(
'layout/layout' => __DIR__ . '/../view/layout/layout.phtml',
'application/index/index' => __DIR__ . '/../view/application/index/index.phtml',
'error/404' => __DIR__ . '/../view/error/404.phtml',
'error/index' => __DIR__ . '/../view/error/index.phtml',
),
'template_path_stack' => array(
__DIR__ . '/../view',
),
'strategies' => array(
'ViewJsonStrategy',
),
),
Gere o resultado no controller
Crie a rota corretamente em seu module.config.php.
'test' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/test',
'defaults' => array(
'controller' => 'Application\Controller\Index',
'action' => 'test',
),
),
),
Em seguida, basta criar uma action que retorne Json:
public function testAction() {
$dados = array('dado' => 'valor');
return new JsonModel($dados);
}
Por fim, no próprio controller, não pode esquecer de colocar a dependência (Json Model):
use Zend\View\Model\JsonModel;
E com isso, já retornamos um resultado simples de Json. Seria necessário trabalhar melhor com o Controller para que você processe os dados e traga algo útil para os usuários.
Fonte: